package cn.tedu.collection;

import java.util.LinkedList;

/*本类用于LinkedList的相关测试*/
public class TestLinkedList {
    public static void main(String[] args) {
        //1.创建集合对象
        LinkedList<String> list = new LinkedList<>();
        //2.添加数据
        list.add("孙悟空");
        list.add("猪八戒");
        list.add("唐三藏");
        list.add("沙师弟");
        list.add("白龙马");
        list.add("白龙马");
        System.out.println(list);

//        list.clear();
//        System.out.println(list); //collection下面集合是中括号[], map下面集合是大括号{}

        //3.请课后自行测试继承自Collection与List的方法(孙子和儿子,继承的方法自己测试)

        //4.测试LinkedList特有方法测试
        list.addFirst("蜘蛛精");//添加首元素
        list.addLast("玉兔精");//添加尾元素
        System.out.println(list);//[蜘蛛精, 孙悟空, 猪八戒, 唐三藏, 沙师弟, 白龙马, 玉兔精]

        System.out.println(list.getFirst());//获取首元素,蜘蛛精
        System.out.println(list.getLast());//获取尾元素,玉兔精

        System.out.println(list.removeFirst());//删除首元素
        System.out.println(list);//[孙悟空, 猪八戒, 唐三藏, 沙师弟, 白龙马, 玉兔精]
        System.out.println(list.removeLast());//删除尾元素
        System.out.println(list);//[孙悟空, 猪八戒, 唐三藏, 沙师弟, 白龙马]

        System.out.println(list.element());//孙悟空,获取首元素 //同名: return getFirst();

        /*别名:查询系列*/
        System.out.println(list.peek());//孙悟空,获取首元素
        /*final LinkedList.Node<E> f = first;
        return (f == null) ? null : f.item;*/
        System.out.println(list.peekFirst());//孙悟空,获取首元素
        System.out.println(list.peekLast());//白龙马,获取尾元素

        /*别名:新增系列*/
        System.out.println(list.offer("海绵宝宝"));//添加尾元素  //return add(e);-->linkLast(e);
        System.out.println(list.offerFirst("派大星"));//添加首元素
        System.out.println(list.offerLast("蟹老板"));//添加尾元素
        System.out.println(list);//[派大星, 孙悟空, 猪八戒, 唐三藏, 沙师弟, 白龙马, 海绵宝宝, 蟹老板]

        /*别名:移除系列*/
        System.out.println(list.poll());//删除首元素
        System.out.println(list.pollFirst());//删除首元素
        System.out.println(list.pollLast());//删除尾元素
        System.out.println(list); //[猪八戒, 唐三藏, 沙师弟, 白龙马, 海绵宝宝]

    }

}
